/*
 * PintarMenu.java
 *
 * Created on 5 de mayo de 2007, 15:15
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package futbol.iu;

import futbol.tacticas.concursantes.Concursantes;
import futbol.tacticas.concursantes.Tactica;
import futbol.tacticas.concursantes.TacticaVacia;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.ImageObserver;
import java.util.Vector;
import resource.LoadResource;

/**
 *
 * @author Jorge
 */
public class PintarMenu {
    
    private int nSeleccionado[]={-1, -1};
    private int nSeleccionadoEnConcursantes[]={-1, -1};
    
    private int index;
    private Vector<Integer> indexSel=new Vector<Integer>();
    private Vector<String> nombres;
    private Tactica[] tacticas=Concursantes.getTodasLasTacticas();
    private Image logo;
    private ImageObserver io;
    private boolean showChampions=false;
    private Image champions;
    
    
    /** Creates a new instance of PintarMenu */
    public PintarMenu(ImageObserver io) {
        this(io, false);
    }

    public PintarMenu(ImageObserver io, boolean showChampions) {
        try{
            logo=LoadResource.getDefault().getLogo();
        }catch(Exception e){}
        try{
            champions=LoadResource.getDefault().getChampions();
        }catch(Exception e){}
        this.showChampions=showChampions;
        this.io=io;
        nombres = Concursantes.getNombres();
        for (int n=0;n<nombres.size();n++){
            if (!nombres.get(n).equals(TacticaVacia.TEXTO_TACTICA_VACIA))
                indexSel.add(new Integer(n));
        }
        index=0;
    }
    
    public int[] seleccionaEquipo(){
        //Devuelve null si aun no se han seleccionado todos.
        if (nSeleccionado[0]==-1){
            nSeleccionado[0]=index;
            return null;
        }
        if (nSeleccionado[1]==-1){
            nSeleccionado[1]=index;
        }
        int nSeleccionadoEnConcursantes[]={
            indexSel.get(nSeleccionado[0]).intValue(),
            indexSel.get(nSeleccionado[1]).intValue()
        };
        return nSeleccionadoEnConcursantes;
    }
    
    private int ciclo(int nValor){
        if (nValor>=indexSel.size()) nValor-=indexSel.size();
        if (nValor<0) nValor+=indexSel.size();
        return nValor;
    }
    
    public void pintarColores(Graphics g, int x, int y, Color c1, Color c2, Color cnum, char letra){
        g.setColor(c1);
        g.fillArc(x+1,y+1,18,18,0,180);
        g.setColor(c2);
        g.fillArc(x+1,y+1,18,18,0,-180);
        g.setColor(cnum);
        g.setFont(new Font("ARIAL", Font.BOLD, 15));
        g.drawString(""+letra, x+5, y+16);
    }
    
    public void pintar(Graphics g){
        if (showChampions){
            g.drawImage(champions,0,20,io);
            return;
        }
        //Dibujar Contornos
        for (int n=0;n<20;n++){
            g.setColor(new Color(255-n,255-n,255));
            g.fillRect(0,n*20, 600, 20);
        }
        for (int n=100;n>=2;n--){
            g.setColor(new Color(255-n,255-n,255));
            g.fillOval(-n,-n, n*20, n*10);
        }
        for (int n=100;n>=2;n--){
            g.setColor(new Color(255-n*2,255,255-n*2));
            g.fillOval(100-n,400-n*3, n*50, n*20);
        }
        g.setColor(new Color(255,255,255));
        g.fillRect(20,210,300,28);
        g.fillRect(20,30,300,30);
        g.setColor(new Color(255,128,0));
        g.drawRect(20,60,300,300);
        g.drawRect(22,210,296,28);
        g.drawRect(20,30,300,30);

        try{
            g.drawImage(logo, 370, 30, io);
            g.setColor(new Color(255,128,0));
            g.drawRect(370, 30, 191, 79);
        }catch(Exception e){}

        g.setColor(Color.BLACK);
        //Visualiza los participantes
        for (int n=0;n<10;n++){
            int nInd=ciclo(index+n-5);
            int nPos=indexSel.get(nInd).intValue();
            int nCol=(5-Math.abs(n-5))*40;
            g.setColor(new Color(255-nCol,255-nCol,255-nCol/2));
            if (nInd==nSeleccionado[0]) g.setColor(new Color(nCol,nCol/2,nCol/3));
            if (n==5) g.setColor(new Color(0,128,0));
            if (n==5 && nInd==nSeleccionado[0]) g.setColor(new Color(255,0,0));
            g.setFont(new Font("ARIAL", Font.BOLD, 20));
            g.drawString(nombres.get(nPos), 50, n*30 + 80);
            int nPos2=indexSel.get(nInd).intValue();
            pintarColores(g, 25, n*30 - 18 + 80, 
                    tacticas[nPos2].getColor1(), tacticas[nPos2].getColor2(), tacticas[nPos2].getColorNumero(),
                    tacticas[nPos2].getNombre().charAt(0));
        }
        g.setFont(new Font("ARIAL", Font.BOLD, 20));
        g.setColor(Color.RED);
        g.drawString("Numero de participantes: " + indexSel.size(),  30, 50);
        g.setFont(new Font("ARIAL", Font.BOLD, 15));
        g.drawString("Pulsa C para cargar un fichero jvc (Partido grabado)", 30, 390);
        g.setFont(new Font("ARIAL", Font.BOLD, 20));
        g.drawString("1-Champions", 370, 140);
        
    }
    
    public void desplazar(int nDir){
        index=ciclo(index+nDir);
    }
    
    public void setShowChampions(boolean ver){
        showChampions = ver;
    }
    
}
